package com.example.roadeyeserver.controller;

import com.example.roadeyeserver.entity.report.*;
import com.example.roadeyeserver.entity.request.CommonRequest;
import com.example.roadeyeserver.entity.request.CrossOverviewStatisticRequest;
import com.example.roadeyeserver.entity.request.FestivalTrafficRequest;
import com.example.roadeyeserver.entity.request.RoadStatisticRequest;
import com.example.roadeyeserver.entity.vo.GantryHourFlowWideVO;
import com.example.roadeyeserver.result.Result;
import com.example.roadeyeserver.service.GantryHourFlowWideService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("gantryHourFlowWide")
public class GantryHourFlowWideController {

    @Resource
    private GantryHourFlowWideService gantryHourFlowWideService;

    @PostMapping("getCrossOverviewReport")
    public Result<CrossOverviewReport> getCrossOverviewReport(@RequestBody CommonRequest request) {
        return gantryHourFlowWideService.getCrossOverviewReport(request);
    }

    @PostMapping("getTrafficRankReport")
    public Result<List<TrafficRankReport>> getTrafficRankReport(@RequestBody CommonRequest request) {
        return gantryHourFlowWideService.getTrafficRankReport(request);
    }

    @PostMapping("getCrossOverviewStatisticReport")
    public Result<List<CrossOverviewStatisticReport>> getCrossOverviewStatisticReport(@RequestBody CrossOverviewStatisticRequest request) {
        return gantryHourFlowWideService.getCrossOverviewStatisticReport(request);
    }

    @PostMapping("getGantryHourFlowWideList")
    public Result<GantryHourFlowWideVO> getGantryHourFlowWideList(@RequestBody CrossOverviewStatisticRequest request) {
        return gantryHourFlowWideService.getGantryHourFlowWideList(request);
    }

    @PostMapping("getCrossOverviewCarReport")
    public Result<List<GantryHourFlowWideVO>> getCrossOverviewCarReport(@RequestBody CrossOverviewStatisticRequest request) {
        return gantryHourFlowWideService.getCrossOverviewCarReport(request);
    }

    @PostMapping("getRoadFlowReport")
    public Result<List<RoadFlowReport>> getRoadFlowReport(@RequestBody CommonRequest request) {
        return gantryHourFlowWideService.getRoadFlowReport(request);
    }

    @PostMapping("getRoadRankReport")
    public Result<List<RoadRankReport>> getRoadRankReport(@RequestBody CommonRequest request) {
        return gantryHourFlowWideService.getRoadRankReport(request);
    }

    @PostMapping("getRoadStatisticReport")
    public Result<List<CrossOverviewStatisticReport>> getRoadStatisticReport(@RequestBody RoadStatisticRequest request) {
        return gantryHourFlowWideService.getRoadStatisticReport(request);
    }

    @PostMapping("getRoadFlowList")
    public Result<GantryHourFlowWideVO> getRoadFlowList(@RequestBody RoadStatisticRequest request) {
        return gantryHourFlowWideService.getRoadFlowList(request);
    }

    @PostMapping("getRoadCarReport")
    public Result<List<CrossOverviewStatisticReport>> getRoadCarReport(@RequestBody RoadStatisticRequest request) {
        return gantryHourFlowWideService.getRoadCarReport(request);
    }

    @PostMapping("getGantryFlowReport")
    public Result<List<CrossOverviewStatisticReport>> getGantryFlowReport(@RequestBody CommonRequest request) {
        return gantryHourFlowWideService.getGantryFlowReport(request);
    }

    @PostMapping("getRoadStatisticReportInLastEightDay")
    public Result<List<CrossOverviewStatisticReport>> getRoadStatisticReportInLastEightDay(@RequestBody RoadStatisticRequest request) {
        return gantryHourFlowWideService.getRoadStatisticReportInLastEightDay(request);
    }

    @PostMapping("getStationFlow")
    public Result<List<RoadRankReport>> getAllStationFlow(@RequestBody CommonRequest request) {
        return gantryHourFlowWideService.getStationFlow(request);
    }

    @PostMapping("getSingleFestivalReport")
    public Result<FestivalTrafficReport> getFestivalTrafficReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getSingleFestivalReport(request);
    }

    @PostMapping("getMultipleFestivalReport")
    public Result<List<FestivalTrafficReport>> getMultipleFestivalReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getMultipleFestivalReport(request);
    }

    @PostMapping("getFestivalRoadRankReport")
    public Result<List<FestivalTrafficRankReport>> getFestivalRoadRankReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getFestivalRoadRankReport(request);
    }

    @PostMapping("getFestivalSingleFlowReport")
    public Result<List<FestivalSingleFlowReport>> getFestivalSingleFlowReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getFestivalSingleFlowReport(request);
    }

    @PostMapping("getFestivalMultipleFlowReport")
    public Result<List<FestivalMultipleFlowReport>> getFestivalMultipleFlowReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getFestivalMultipleFlowReport(request);
    }

    @PostMapping("getFestivalSingleTrendReport")
    public Result<List<FestivalMultipleFlowReport>> getFestivalSingleTrendReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getFestivalSingleTrendReport(request);
    }

    @PostMapping("getFestivalSingleVehicle")
    public Result<GantryHourFlowWideVO> getFestivalSingleVehicle(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getFestivalSingleVehicle(request);
    }

    @PostMapping("getFestivalHistoricalTrend")
    public Result<List<FestivalMultipleFlowReport>> getFestivalHistoricalTrend(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getFestivalHistoricalTrend(request);
    }

    @PostMapping("getMorningEveningOverviewReport")
    public Result<MorningEveningOverviewReport> getMorningEveningOverviewReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getMorningEveningOverviewReport(request);
    }

    @PostMapping("getMorningEveningRankReport")
    public Result<MorningEveningRankReport> getMorningEveningRankReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getMorningEveningRankReport(request);
    }

    @PostMapping("getMorningEveningHourReport")
    public Result<List<MorningEveningHourReport>> getMorningEveningHourReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getMorningEveningHourReport(request);
    }

    @PostMapping("getMorningEveningCarTypeReport")
    public Result<CrossOverviewStatisticReport> getMorningEveningCarTypeReport(@RequestBody FestivalTrafficRequest request) {
        return gantryHourFlowWideService.getMorningEveningCarTypeReport(request);
    }

}
